Problem with sys.argv[1] when unittest module is in a script

Posted by chrissygormley on Stack Overflow See other posts from Stack Overflow or by chrissygormley
Published on 2010-05-11T15:57:01Z Indexed on 2010/05/11 16:14 UTC
Read the original article Hit count: 259

Filed under:
|
|
|
|

Hello,

I have a script that does various things and access paramenters using sys.argv but when the script gets to the unittest part of the code it says there is no module for this. The script that I have is:

class MyScript():

    def __init__(self):
        self.value = sys.argv[1]

    def hello(self):
        print self.value

    def suite(self):
        modules_to_test = ('external_sanity_onvif', 'starttest')
        alltests = unittest.TestSuite()
        for module in map(__import__, modules_to_test):
            alltests.addTest(unittest.findTestCases(module))
        return alltests


if __name__ == '__main__': 
    Run = MyScript()
    Run.hello()
    log_file = 'log_file.txt'
    test_file = open(log_file, "w") 
    runner = unittest.TextTestRunner(test_file)
    unittest.main(defaultTest='Run.suite', testRunner=runner)

Say I enter ./script.py Hello in the command line. The error I get is:

AttributeError: 'module' object has no attribute 'Hello'

If I remove the unittest module it works. Also if I remove the testrunner log and leave it at:

unittest.main(defaultTest='Run.suite')

This still doesn't work.

Can anyone help.

Thanks

© Stack Overflow or respective owner

Related posts about python

Related posts about unittest